import Vue from 'vue'
import Router from 'vue-router'

Vue.use(Router)

/* Layout */
import Layout from '@/layout'

// 静态路由：比如登录、404、首页，不用鉴别角色权限
// 动态路由：需要鉴别角色权限，有权限才能看到
// 这里都是静态路由
export const routes = [
  {
    path: '/login',
    component: () => import('@/views/Login/index'),
    hidden: true
  },
  {
    path: '/',
    component: Layout,
    redirect: '/workbench'
  },
  {
    path: '/workbench',
    component: Layout,
    children: [
      {
        path: '',
        component: () => import('@/views/Workbench/index'),
        // meta：原信息（原数据），用于左侧菜单的图标和文字展示，也可以不叫meta
        meta: { title: '工作台', icon: 'el-icon-data-board' }
      }
    ]
  },
  {
    path: '/404',
    component: () => import('@/views/404'),
    hidden: true
  },
  // 以下路由是后加的
  // { path: '*', component: () => import('@/views/404'), hidden: true }, // 匹配优先级最低，要放在一级路由里
  {
    path: '/car/addMonthCard',
    component: () => import('@/views/Car/CarCard/addMonthCard.vue')
  },
  {
    path: '/park/addEnterprise',
    component: () => import('@/views/Park/Enterprise/addEnterprise')
  },
  {
    path: '/park/enterpriseDetail/:id?',
    component: () => import('@/views/Park/Enterprise/enterpriseDetail')
  },
  {
    path: '/sys/addRole',
    component: () => import('@/views/System/Role/addRole.vue')
  }
]

// 创建router实例
// 封装成函数，方便复用，只要一调用就能得到新的路由实例对象，而不用重新写一遍
// const createRouter = () =>
//   new Router({
//     // mode: 'history', // require service support
//     mode: 'history',
//     scrollBehavior: () => ({ y: 0 }),
//     routes: routes
//   })
// 上面等价于下面
function createRouter () {
  return new Router({
    // mode: 'history', // require service support
    mode: 'history', // 默认是哈希模式
    // 当页面有滚动条时，跳转页面默认滚动条位置不变；设置“y: 0”会让页面强制回到最上方
    scrollBehavior: () => ({ y: 0 }),
    // 路由规则
    routes: routes
  })
}

const router = createRouter()

// 重置路由方法
export function resetRouter () {
  // 得到一个全新的router实例对象
  const newRouter = createRouter()
  // 使用新的路由记录覆盖掉老的路由记录
  router.matcher = newRouter.matcher // 并没有清空全部路由规则，createRouter里包含原始的静态路由
}

export default router
